问一下list<>中的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:04:40
private list<string> AList;
AList=new list<string>();
AList.Add("This is a string.");

private list<MyClass> Blist;
BList=new list<MyClass>();
BList.Add(new MyClass());

--------为什么把一个字符串加入到list 不用new,把自己的Myclass却要new ,按理说string也是对象嘛

其实string类型,我们可以不正确的将之理解为值类型
因为你可以尝试下
string s1="111";
string s2=s1;
改变下s2的值,你看看s1有没有变化呢?
没有变化,由于运算符重载的问题,其实 = 号实际上(我的看法)是返回了一个新的内容和s1相同的string类型的对象,所以在平时的操作我们可以将他等同于一个值类型看待
那你看看,上面的例子
string s1="111";我们并没有用到new关键字,"111"可能也直接被识别为string类型了
而对于下面的大哥说的
string tmp = new string("This is a string.");
我记得没有这样的写法吧?
string ss = new string(new char[]{'1'});
string ss2 = new string(new char[]{'1','1'});
这个才是正确的吧?
我测试了下,加入一行Console.WriteLine("11");
MSIL翻译为
IL_004f: ldstr "11"
IL_0054: call void [mscorlib]System.Console::WriteLine(string)
可见是将之当作string类型的
所以LZ你也不用深究这个了我觉得····

字符串是一种特殊的引用类型,
AList.Add("This is a string.");
实际上在编译时进行了如下操作
string tmp = new string("This is a string.");
AList.Add(tmp);

只是字符串有这种情况,其它引用类型都是要显式的n